package br.usjt.mazerobot.commons.constante;

public enum Direcao {

    //================= Direções ===============================================
    NORTE((byte) 0, (byte) 0, (byte) 1),
    LESTE((byte) 1, (byte) 1, (byte) 0),
    SUL((byte) 2, (byte) 0, (byte) -1),
    OESTE((byte) 3, (byte) -1, (byte) 0);
    
    //==========================================================================
    private final byte codigo;
    private final byte incrementoX;
    private final byte incrementoY;

    private Direcao(byte codigo, byte incrementoX, byte incrementoY) {
        this.codigo = codigo;
        this.incrementoX = incrementoX;
        this.incrementoY = incrementoY;
    }

    public byte getCodigo() {
        return codigo;
    }

    public byte getIncrementoX() {
        return incrementoX;
    }

    public byte getIncrementoY() {
        return incrementoY;
    }

    public static Direcao fromValue(byte codigo) {

        for (Direcao d : Direcao.values()) {
            if (d.getCodigo() == codigo) {
                return d;
            }
        }
        throw new IllegalArgumentException("Não Existe");
    }
}